﻿/**
 * @file PyFITKMaterialsFoams.h
 * @brief 泡沫材料 相关的python接口
 * @author wangning (2185896382@qq.com)
 * @date 2024-12-03
 */
#ifndef _PY_SEA_MATERIALFoams_WAPPER_H___
#define _PY_SEA_MATERIALFoams_WAPPER_H___

#include <QString>
#include <QObject>
#include "PythonInterfaceAPI.h"
#include "FITK_Component/FITKAcousticsPhysics/PyFITKMaterialsFoams.h"

class Foams : public Acoustics::PyFITKMaterialsFoams
{
public:
    explicit Foams(const QString& name);
    explicit Foams();
    virtual ~Foams() = default;

};

/**
 * @brief 泡沫材料相关PYTHON接口装饰
 * @author wangning (2185896382@qq.com)
 * @date 2024-12-03
 */
class PythonInterfaceAPI MaterialFoamsWapper : public QObject
{
    Q_OBJECT
public slots:
    Foams* new_Foams();

    void delete_Foams(Foams* obj);
    /**
     * @brief 在Python解释器中通过名称获取对象
     * @author wangning (2185896382@qq.com)
     * @date 2024-12-03
     */
    Foams* static_Foams_GetFoams(const QString& name);
    /**
     * @brief 获取名称
     * @author wangning (2185896382@qq.com)
     * @date 2024-12-03
     */
    QString getName(Foams* obj);
    /**
     * @brief 设置名称
     * @author wangning (2185896382@qq.com)
     * @date 2024-12-03
     */
    void setName(Foams* obj, const QString& name);
    /**
     * @brief  设置密度
     * @param[i]  density：密度
     * @author wangning (2185896382@qq.com)
     * @date   2024-12-03
     */
    void setDensity(Foams* obj, double density);
    /**
     * @brief  设置模量
     * @param[i]  shear：剪切模量
     * @param[i]  young：杨氏模量（拉伸模量）
     * @param[i]  poissonRatio：泊松比
     * @author wangning (2185896382@qq.com)
     * @date   2024-12-03
     */
    void setModulus(Foams* obj, double shear, double young, double poissonRatio);
    /**
     * @brief  设置其余属性
     * @param[i]  flowResistivity：静态流阻率
     * @param[i]  porosity：孔隙率
     * @param[i]  tortuosity：曲折度
     * @param[i]  viscousLength：粘性特征长度
     * @param[i]  thermalLength：热特征长度
     * @param[i]  lossFactor：阻尼损耗因子
     * @author wangning (2185896382@qq.com)
     * @date   2024-12-03
     */
    void setOtherProp(Foams* obj, double flowResistivity, double porosity, double tortuosity, double viscousLength, double thermalLength, double lossFactor);
    /**
     * @brief  创建材料
     * @param[i]  name：材料名称
     * @author wangning (2185896382@qq.com)
     * @date   2024-12-03
     */
    void createMaterial(Foams* obj, const QString& name);
};

#endif

